#pragma once
#include "stdafx.h"
//#include "Worksheet.h"
//Pawel 13.03.07 od
#include "Root.h"
#include "Node.h"
//Pawel 13.03.07 do
using namespace std;
using namespace System;
using namespace System::Windows::Forms;

class Keylistner
{
private:
	System::Windows::Forms::Keys E;
	bool shift,control;
//Pawel 13.03.07 od
	Root *tree;

//Pawel 13.03.07 do
public:
	Keylistner() {
		posH = 0;
		posV = 0;
	
	};
	Keylistner(Root *tr);
		Node *wezel;
		Node *podswietlony; 
		bool modified;
	char *nazwa;
	bool tField;
	int tF_X,tF_Y;
	int posH,posV;
	int minPosV,minPosH,maxPosV,maxPosH;
	Node *edited;
	Keylistner(System::Windows::Forms::KeyEventArgs^ e);
	void KeyDown(System::Windows::Forms::KeyEventArgs ^e);
	void KeyUp(System::Windows::Forms::KeyEventArgs^ e);

	~Keylistner(void) {};
	Node* getWezel() { return wezel;}
	Node* getTree() { return tree;}
	/*Bury 10.04.07 od
	funkcja setWezel ustawia focus z zewnatrz....UWAGA:bez zadnych zabezpieczen
	uzywana w Form1.h w funkcji panel1_MouseDown*/
	void setWezel(Node* node) { wezel=node;} 
	
	void calculateDisplacementBoundaries();
	/*funkcja editNode edytuje nazwy nodow...UWAGA:do poprawki z rysowaniem bo jak wyedytowany node
	jest dluzszy niz wczesniejszy to nachodzi na syna...trzeba tylko poddrzewo przeleciec i X
	przesunac ale nie wiem czy zdarze to zrobic a to przeciez robota zbyszka:)
	uzywana w Form1.h w funkcji panel1_MouseDown - jak klikniety node byl juz focus to otwiera
	okno edycji*/
	void editNode(Node* wezel);
	//Bury 10.04.07 od
};
